/**
 * 编程统计字符串"ABCD123!@#$%ab"中大写字母、小写字母、数字、其它字符的个数并打印出来。
 */

public class Test1 {
    public static void main(String[] args) {
        String str="ABCD123!@#$%ab";  //创建一个内容为"ABCD123!@#$%ab"的字符传。
        String numberRex="\\d";         //格式为数字的正则表达式
        String bigRex="[A-Z]";        //格式为大字母的正则表达式
        String smallRex="[a-z]";        //格式为小字母的正则表达式
        char [] c=str.toCharArray();  //把字符串转化为字符数组
        int numberCount=0;
        int bigGraphemeCount=0;
        int smallGraphemeCount=0;
        int otherCount=0;
        //循环遍历字符数组
        for (int i=0;i<c.length;i++){
            //判断是否为数字

            if ( Character.toString(c[i]).matches(numberRex)){

                numberCount++;
                System.out.println("发现数字"+Character.toString(c[i])+"，目前数字出现了"+numberCount+"次");
            }
            //判断是否为大写字母
            else if ( Character.toString(c[i]).matches(bigRex)){
                bigGraphemeCount++;
                System.out.println("发现大写字母"+Character.toString(c[i])+"，目前大写字母出现了"+bigGraphemeCount+"次");
            }
            //判断是否为小写字母
            else if (Character.toString(c[i]).matches(smallRex)){
                smallGraphemeCount++;
                System.out.println("发现小写字母"+Character.toString(c[i])+"，目前小写出现了"+smallGraphemeCount+"次");
            }
            //判断是否为其他字符
            else {
                otherCount++;
                System.out.println("发现其他字符"+Character.toString(c[i])+"，目前其他字符出现了"+otherCount+"次");
            }
        }
        //把结果打印出来
        System.out.println("大写字母个数:"+bigGraphemeCount+"、小写字母个数："+smallGraphemeCount+"、数字个数："+numberCount+"、其它字符的个数："+otherCount);

    }
}